package homework;

import java.text.DecimalFormat;

public class Cone_Surface_area {

    // 定义一个圆类，类名为 Circle
    public static class Circle {
        // 定义两个量，分别为半径和π值
        private double radius;
        private static final double PI = 3.141592653589793;

        // 有参构造器
        public Circle(double radius) {
            this.radius = radius;
        }

        // 定义一个方法，实现求圆面积，将圆面积返回，返回类型为double
        public double getArea() {
            return PI * radius * radius;
        }
    }

    // 定义一个扇形类，类名为 Sector
    public static class Sector {
        private double radius;
        private double slantHeight;

        // 有参构造器
        public Sector(double radius, double slantHeight) {
            this.radius = radius;
            this.slantHeight = slantHeight;
        }

        // 定义一个方法，实现求圆锥侧面积，将侧面积返回，返回类型为double
        public double getLateralArea() {
            return Circle.PI * radius * slantHeight;
        }
    }

    // 定义一个公开的圆锥类 Cone
    public static class Cone {
        private Circle base;
        private Sector lateral;

        // 定义一个方法，该方法实现计算圆锥的表面积，返回值为double
        public double getSurfaceArea() {
            return base.getArea() + lateral.getLateralArea();
        }

        // 有参构造器
        public Cone(Circle base, Sector lateral) {
            this.base = base;
            this.lateral = lateral;
        }
    }

    // 定义主方法
    public static void main(String[] args) {
        // 通过有参构造创建圆对象，将底面半径设置为 8
        Circle base = new Circle(8);

        // 通过有参构造创建扇形对象，将扇形所需的半径和母线传入
        Sector lateral = new Sector(8, 15);

        // 通过有参构造创建圆锥对象，将圆对象和扇形对象传入
        Cone cone = new Cone(base, lateral);

        // 调用计算圆锥表面积的方法
        double surfaceArea = cone.getSurfaceArea();

        // 四舍五入格式化不换行输出圆锥表面积，输出格式：圆锥的表面积为xx
        DecimalFormat df = new DecimalFormat("#.00");
        System.out.println("圆锥的表面积为" + df.format(surfaceArea));
    }
}
